<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../node_modules/vue/dist/vue.global.js"></script>
</head>

<body>
    <div id="app">
        <!-- 事件处理为逻辑运算 -->
        <p v-on:click="count++">{{count}}</p>
        <!-- 事件处理的简写方式 -->
        <p @click='addFn'>{{count}}</p>
        <!-- 事件处理中使用bom中定义的函数 不能识别bom中的方法-->
        <p @click="alertFn">提示</p>
        <!-- 事件处理函数中的事件对象 -->
        <button @click="handleFn">事件对象</button>
        <input type="text" @input="getvalue">

        <!--事件传递参数-->
        <!-- 事件传递参数的同时获取事件对象 -->
        <ul>
            <li @click="gotodetail(goodsList.id,$event)">{{goodsList.name}}--{{goodsList.price}}</li>
        </ul>
        <!-- 直接将事件处理逻辑函数写在标签上,不建议这么写, 因为每次count 更新,p 标签会重新渲染,箭头函数会被重新创建,造成性能浪费-->
        <p @click="()=>{count+=100}">{{count}}</p>
    </div>
</body>

</html>
<script>
    // v-on: 用来给标签绑定事件处理逻辑的指令
    // 语法: v-on:事件名= '事件的逻辑处理'  
    // 事件的逻辑处理可以是简单的运算, 还可以是 执行函数
    // 简写: @事件名= '事件的逻辑处理'

    // vue中的事件对象e 不需要做兼容性的处理,vue 已经对该事件对象做了封装和兼容性的处理了
    // 注意: 当事件执行函数没有参数时,事件对象就是形参e,,如果事件执行函数有参数, 那么事件对象对应形参就是$event
    // 
    const app = Vue.createApp({
        data() {
            return {
                count: 100,
                goodsList: {
                    id: 10,
                    name: "BYD-宋DMI-PLUS",
                    price: '15w'
                }
            }
        },
        methods: {
            addFn() {
                this.count++
            },
            alertFn() {
                alert(123)
            },
            handleFn(e) {
                console.log(e);
            },
            getvalue(e) {
                console.log(e.target.value);
            },
            gotodetail(id, e) {
                console.log(id);
                console.log(e);
                //跳转到详情页面 传递参数id 到详情页
            }

        }
    }).mount('#app')

</script>